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

Deazer

Разработчик
Staff member
#1
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:

Deazer

Разработчик
Staff member
#2
UP! Обновлен баффер - полностью удален из SQL, перенесен в XML.
Структура по формату и виду аналогична !
Подготовьте свои кастомные баффы и т.д. в XML файле перед обновлением.
 

citadel

Новичок
#7
А возможно настройка таким образом,чтобы бафались определенные наборы при наличии в инвентаре предмета,но с тем учетом ,чтобы он не исчезал.
 

Deazer

Разработчик
Staff member
#10
или руками в data/skills или конфигом
# Модификатор времени баффов. Пример: 1024-3600;1025-3600 (Время в секундах)
SkillDurationMod =
 

MANUAL

Новичок
#11
или руками в data/skills или конфигом
# Модификатор времени баффов. Пример: 1024-3600;1025-3600 (Время в секундах)
SkillDurationMod =
То есть если в конфиге править, то он не будет влиять на баф дающийся игром (играющим к примеру за сапорта) !?
 

Deazer

Разработчик
Staff member
#12
по моему там вообще свои ID, так что конечно не будет влиять
 

localhost

Новичок
#13
как сделать так что бы проверяло сначала на премиум затем если премиума нет расходовало итемы?
вот так не работает
Code:
        <consume anyFirst="true">
            <item id="57" amount="1" is_premium_required="true"/>
            <item id="6673" amount="1"/>
        </consume>
 

Avadon

Новичок
#14
Вопрос следующего плана: как будет выглядеть строка добавления к диалогу, если мы создали нпц по адресу .../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>
 

OurLastnight

Пользователь
#15
Вопрос следующего плана: как будет выглядеть строка добавления к диалогу, если мы создали нпц по адресу .../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>
 

Avadon

Новичок
#16
Вам нужно настроить шаблон получения эффекта в 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
 

OurLastnight

Пользователь
#17
В 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" />
У вас такой?
 

Avadon

Новичок
#18
Для начала, чтоб он вообще реагировал на данный байпас нужен тип нпц: <set name="type" value="NpcBuffer" />
У вас такой?
Спасибо, разобрался. Проблема была именно в <set name="type" value="NpcBuffer" /> !
 
Top